// 该文件用于创建Vuex中核心的store
import Vuex from "vuex";
import Vue from "vue";

Vue.use(Vuex)

const actions = { // 用于响应vc组件里的动作，类似service层，处理业务逻辑
    increment(context, value) { // context => 迷你版的store
        context.commit('INCREMENT', value);
    },
    decrement(context, value) {
        context.commit('DECREMENT', value);
    },
    incrementOdd(context, value) {
        if (context.state.sum % 2) {
            context.commit('INCREMENT', value)
        }
    },
    incrementWait(context, value) {
        setTimeout(() => {
            context.commit('INCREMENT', value)
        }, 500)
    }
}
const mutations = { // 用于操作数据（state），类似mapper层，操作数据
    INCREMENT(state, value) {
        state.sum += value;
    },
    DECREMENT(state, value) {
        state.sum -= value;
    }
}
const state = { // 用于保存数据，类似数据库
    sum: 0 //当前的和
}

// 创建并暴露store
export default new Vuex.Store({
    actions,
    mutations,
    state
})